import random

#所有游戏对象的基类，用于设计所有游戏的共同属性与服务
class Game:
    quanList=[]
    quanPlayer=""
    quanComputer=""
    result={}

    #获得当前游戏的结果
    def getResult(self):
        return self.result

    # 抽象的服务，在子类中实现具体怎么做，用于返回游戏的名字
    def getName(self):
        pass

    # 抽象的服务，在子类中实现具体怎么做，用于打印欢迎词
    def printWelCome(self):
        pass

    # 具体的服务，用于要求用户输入拳，并做合法性检查
    def inputQuan(self):
        while True:
            num = 1

            for quan in self.quanList:
                print(str(num) + ":" + quan)
                num += 1
            self.quanPlayer = input()
            if self.quanPlayer in [str(x) for x in range(1, len(self.quanList))]:
                self.quanPlayer = self.quanList[eval(self.quanPlayer) - 1]
                break
            elif self.quanPlayer in self.quanList:
                break
            else:
                print("输入不合法，请重新输入")
        self.result["玩家拳"]=self.quanPlayer

    # 具体的服务，用于随机产生拳
    def computerQuan(self):
        self.quanComputer = self.quanList[random.randint(0, len(self.quanList) - 1)]
        self.result["电脑拳"] = self.quanComputer

    # 抽象的服务，在子类中实现具体怎么做，用于裁决游戏谁输谁赢
    def caiJueJieGuo(self):
        pass

    # 具体的服务，用于设计玩游戏的流程（游戏第一步做什么、第二步做什么）
    def play(self):
        self.printWelCome()
        self.inputQuan()
        self.computerQuan()
        result=self.caiJueJieGuo()
        print(result)
        return result
